using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using App.Modelo.Interfaces;

namespace App.Modelo
{
    public class Reparacion:IObjetoDominio 
    {
        public Reparacion()
        {
            TareasRealizadas = new List<Tarea>();
            Piezas = new List<LineaReparacion>();
        }

        private ReparacionFallaReportada fallaReportada;

        public virtual Int32 Id { get; set; }

        public virtual Cliente Cliente { get; set; }
        public virtual ReparacionFallaReportada FallaReportada
        {
            get { return fallaReportada == null 
                ? fallaReportada = new ReparacionFallaReportada() 
                : fallaReportada; }
            set { fallaReportada = value; }
        }

        public virtual Equipo Equipo { get; set; }
        public virtual EstadoReparacion Estado { get; set; }
        public virtual ResolucionReparacion Resolucion { get; set; }
        public virtual DateTime? Ingreso { get; set; }
        public virtual DateTime? Salida { get; set; }

        public virtual IList<Tarea> TareasRealizadas { get; set; }
         
        public virtual DiagnosticoReparacion Diagnostico { get; set; }
        /**
         * Piezas utilizadas
         */
        public virtual IList<LineaReparacion> Piezas { get; set; }

        /**
         * <summary>Tecnico asignado a la reparacion</summary>
         */
        public virtual Usuario TecnicoAsignado { get; set; }


        public virtual ReparacionAnulacion Anulacion { get; set; }


        public virtual TimeSpan TotalHoras
        {
            get
            {
                TimeSpan d = new TimeSpan();

                if (TareasRealizadas != null)
                    foreach (var i in TareasRealizadas)
                        d = d + i.Duracion;

                return d;
            }
        }

        public virtual ComentarioResolucion ComentarioResolucion { get; set; }


    }
}

